SPSS DO IF 简易教程

作者:Ruben Geert van den Berg,发表于 SPSS A-Z

SPSS 中,DO IF ... END IF 之间的转换命令仅应用于满足一个或多个条件的个案(数据行)。在许多情况下,使用 IF 命令可以更快地达到相同的结果。

SPSS Do If 示例

假设我们需要将人们的月收入转换为收入等级。我们可能希望对男性和女性受访者使用不同的分界点。在这种情况下,我们可以首先使用 RECODE 命令,仅针对性别为女性的个案。接下来,我们将对男性使用不同的 RECODE 命令。以下 语法 演示了这一点,使用了 employees.sav 数据文件。

SPSS Do If 语法示例 1

***1. 设置默认目录并打开数据文件。**
cd 'd:downloaded'. /* 或者 "employees.sav" 所在的任何位置。*/

get file 'employees.sav'.

***2. RECODE 命令仅限于女性受访者。**
do if gender = 0.
recode monthly_income (lo thru 2000 = 1)(lo thru 2400 = 2)(lo thru hi = 3) into income_class.
end if.

***3. RECODE 命令仅限于男性受访者。**
do if gender = 1.
recode monthly_income (lo thru 2500 = 1)(lo thru 3000 = 2)(lo thru hi = 3) into income_class.
end if.

***4. 检查结果。**
crosstabs income_class by gender.

Else If

虽然之前的语法可以完成任务,但有一种更短的方法可以实现完全相同的结果:ELSE IF。这意味着只有对于 1) 满足当前条件 并且 2) 不满足任何先前条件的个案,才会执行后续的命令。以下语法展示了如何使用它。

SPSS Do If 语法示例 2

***针对女性和男性的不同 RECODE 命令。**
do if gender = 0.
recode monthly_income (lo thru 2000 = 1)(lo thru 2400 = 2)(lo thru hi = 3) into income_class.
else if gender = 1.
recode monthly_income (lo thru 2500 = 1)(lo thru 3000 = 2)(lo thru hi = 3) into income_class.
end if.

Else

ELSE IF 类似,ELSE 后面的命令将对所有不满足任何先前条件的个案执行。这里需要注意的重要一点是,ELSE 包括由于 缺失值 导致无法评估先前条件的个案。

最后一个语法示例通过使用 XDATE 函数创建了一个出生年代变量(birth decennium)。接下来,FREQUENCIES 命令确认生日未知的受访者未被分配到任何出生年代。

SPSS Do If 语法示例 3

***1. 创建 birth_decennium 变量。**
do if xdate.year(date_of_birth) lt 1960.
compute birth_decennium = 1.
else if xdate.year(date_of_birth) lt 1970.
compute birth_decennium = 2.
else if xdate.year(date_of_birth) lt 1980.
compute birth_decennium = 3.
else.
compute birth_decennium = 4.
end if.

***2. 将值标签应用于 birth_decennium。**
value labels birth_decennium 1 '50''s' 2 '60''s' 3 '70''s' 4 '80''s'.

***3. 检查 birth_decennium 的频率分布。**
frequencies birth_decennium.

注意

只有 SPSS 转换命令才能在 DO IF 中使用。这不包括大多数生成输出的命令,如 FREQUENCIES(频率分析)和 DESCRIPTIVES(描述统计)。要在个案子集上使用此类命令,请参阅 FILTER(筛选), SPLIT FILE(拆分文件)和 SELECT IF(选择个案)。